\hypertarget{packet_8c}{}\section{packet.\+c File Reference}
\label{packet_8c}\index{packet.\+c@{packet.\+c}}
{\ttfamily \#include $<$string.\+h$>$}\\*
{\ttfamily \#include \char`\"{}packet.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}crc.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct_p_a_c_k_e_t___s_t_a_t_e__t}{P\+A\+C\+K\+E\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{packet_8c_ad881bd33dab40a1797ebc113a66bc301}{packet\+\_\+init} (void($\ast$s\+\_\+func)(unsigned char $\ast$data, unsigned int len), void($\ast$p\+\_\+func)(unsigned char $\ast$data, unsigned int len), int handler\+\_\+num)
\item 
void \hyperlink{packet_8c_ac5b878f81eb01d6a5b78ea6169aaec3f}{packet\+\_\+send\+\_\+packet} (unsigned char $\ast$data, unsigned int len, int handler\+\_\+num)
\item 
void \hyperlink{packet_8c_a5c140f4c92ab36d46fd7da88d676783e}{packet\+\_\+timerfunc} (void)
\item 
void \hyperlink{packet_8c_ae5d5ab2db55e1e1552db73070f660730}{packet\+\_\+process\+\_\+byte} (uint8\+\_\+t rx\+\_\+data, int handler\+\_\+num)
\end{DoxyCompactItemize}


\subsection{Function Documentation}
\hypertarget{packet_8c_ad881bd33dab40a1797ebc113a66bc301}{}\index{packet.\+c@{packet.\+c}!packet\+\_\+init@{packet\+\_\+init}}
\index{packet\+\_\+init@{packet\+\_\+init}!packet.\+c@{packet.\+c}}
\subsubsection[{packet\+\_\+init(void($\ast$s\+\_\+func)(unsigned char $\ast$data, unsigned int len), void($\ast$p\+\_\+func)(unsigned char $\ast$data, unsigned int len), int handler\+\_\+num)}]{\setlength{\rightskip}{0pt plus 5cm}void packet\+\_\+init (
\begin{DoxyParamCaption}
\item[{void($\ast$)(unsigned char $\ast$data, unsigned int len)}]{s\+\_\+func, }
\item[{void($\ast$)(unsigned char $\ast$data, unsigned int len)}]{p\+\_\+func, }
\item[{int}]{handler\+\_\+num}
\end{DoxyParamCaption}
)}\label{packet_8c_ad881bd33dab40a1797ebc113a66bc301}
\hypertarget{packet_8c_ae5d5ab2db55e1e1552db73070f660730}{}\index{packet.\+c@{packet.\+c}!packet\+\_\+process\+\_\+byte@{packet\+\_\+process\+\_\+byte}}
\index{packet\+\_\+process\+\_\+byte@{packet\+\_\+process\+\_\+byte}!packet.\+c@{packet.\+c}}
\subsubsection[{packet\+\_\+process\+\_\+byte(uint8\+\_\+t rx\+\_\+data, int handler\+\_\+num)}]{\setlength{\rightskip}{0pt plus 5cm}void packet\+\_\+process\+\_\+byte (
\begin{DoxyParamCaption}
\item[{uint8\+\_\+t}]{rx\+\_\+data, }
\item[{int}]{handler\+\_\+num}
\end{DoxyParamCaption}
)}\label{packet_8c_ae5d5ab2db55e1e1552db73070f660730}
\hypertarget{packet_8c_ac5b878f81eb01d6a5b78ea6169aaec3f}{}\index{packet.\+c@{packet.\+c}!packet\+\_\+send\+\_\+packet@{packet\+\_\+send\+\_\+packet}}
\index{packet\+\_\+send\+\_\+packet@{packet\+\_\+send\+\_\+packet}!packet.\+c@{packet.\+c}}
\subsubsection[{packet\+\_\+send\+\_\+packet(unsigned char $\ast$data, unsigned int len, int handler\+\_\+num)}]{\setlength{\rightskip}{0pt plus 5cm}void packet\+\_\+send\+\_\+packet (
\begin{DoxyParamCaption}
\item[{unsigned char $\ast$}]{data, }
\item[{unsigned int}]{len, }
\item[{int}]{handler\+\_\+num}
\end{DoxyParamCaption}
)}\label{packet_8c_ac5b878f81eb01d6a5b78ea6169aaec3f}
\hypertarget{packet_8c_a5c140f4c92ab36d46fd7da88d676783e}{}\index{packet.\+c@{packet.\+c}!packet\+\_\+timerfunc@{packet\+\_\+timerfunc}}
\index{packet\+\_\+timerfunc@{packet\+\_\+timerfunc}!packet.\+c@{packet.\+c}}
\subsubsection[{packet\+\_\+timerfunc(void)}]{\setlength{\rightskip}{0pt plus 5cm}void packet\+\_\+timerfunc (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{packet_8c_a5c140f4c92ab36d46fd7da88d676783e}
Call this function every millisecond. 